package ik.xcj.hostpital.manage.service;

import com.github.pagehelper.PageInfo;
import ik.xcj.hostpital.manage.pojo.dto.PaymentInfoAddNewDTO;
import ik.xcj.hostpital.manage.pojo.vo.PatientListItemVO;
import ik.xcj.hostpital.manage.pojo.vo.PaymentInfoStandardVO;
import ik.xcj.hostpital.manage.pojo.dto.PaymentInfoUpdateDTO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 处理支付信息数据的业务接口
 *
 * @author ik.xcj
 * @version 0.0.1
 */
@Transactional
public interface IPaymentInfoService {

    /**
     * 添加支付信息数据
     * @param paymentInfoAddNewDTO 新的支付信息
     */
    void addNew(PaymentInfoAddNewDTO paymentInfoAddNewDTO);

    /**
     * 根据id删除支付信息
     *
     * @param id 支付信息id
     */
    void delete(Long id);

    /**
     * 修改支付信息详情
     *
     * @param id             被修改的支付信息id
     * @param paymentInfoUpdateDTO 封装了新数据的对象
     */
    void updateInfoById(Long id, PaymentInfoUpdateDTO paymentInfoUpdateDTO);

    /**
     * 根据支付信息id查询支付信息详情
     *
     * @param id 支付信息id
     * @return 匹配的支付信息详情，如果没有匹配的数据，将抛出异常
     */
    PaymentInfoStandardVO getStandardById(Long id);

    /**
     * 查询支付信息数据列表
     * @return 支付信息数据列表
     */
    PageInfo<PatientListItemVO> list(Integer page,Integer pageSize);
}
